package com.ce.pms.charge.service;

import java.util.List;

import com.ce.pms.charge.model.BankAccountDomain;
import com.ce.pms.charge.vo.BankAccountVO;
import com.ce.pms.house.model.HouseDomain;

public interface IBankAccountService {

	/**
	 * 功能描述: 增加划款银行帐号 <br>
	 * @param bankAccount
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-25  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public BankAccountVO addBankAccount(BankAccountVO bankAccount);

	/**
	 * 功能描述: 修改划款银行帐号 <br>
	 * @param bankAccount
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-25  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public BankAccountVO editBankAccount(BankAccountVO bankAccount);

	/**
	 * 禁用银行帐号
	 *@param bankAccount
	 * @author Adama Yue
	 * @CreateDate:下午04:32:32
	 */
	public void disableBankAccount(BankAccountDomain bankAccount);
	/**
	 * 启用银行帐号
	 *@param bankAccount
	 * @author Adama Yue
	 * @CreateDate:下午04:33:09
	 */
	public void activationBankAccount(BankAccountDomain bankAccount);

	/**
	 * 功能描述: 启用指定id的银行帐号 <br>
	 * @param bankAccountId
	 * @param operator
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-26  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Boolean activationBankAccount(Long bankAccountId,Long operator);

	/**
	 * 功能描述: 禁用指定id的银行帐号 <br>
	 * @param bankAccountId
	 * @param operator 操作人id
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-26  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Boolean disableBankAccount(Long bankAccountId,Long operator);

	/**
	 * 取得给定房间的当前可用银行帐号
	 *@param house
	 *@return
	 * @author Adama Yue
	 * @CreateDate:下午04:31:46
	 */
	public BankAccountDomain currentBankAccount(HouseDomain house, boolean validity);

	/**
	 * 功能描述: 取得给定id的房间的当前可用银行帐号 <br>
	 * @param houseId
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-25  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public BankAccountVO getCurrentBankAccount(Long houseId);

	/**
	 * 功能描述: 取得给定id的产权的当前可用银行帐号 <br>
	 * @param houseId
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-25  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public BankAccountVO getCurrentBankAccountByPro(Long proRightId);

	/***
	 * 功能描述: 取得所有给定房间的当前可用银行帐号 <br>
	 * @param houseIds
	 * @return
	 * Create author:yandawei <br>
	 * Create on:2008-7-31  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<BankAccountDomain> currentBankAccount(String houseIds, boolean validity);

	/**
	 * 功能描述: 删除指定房间的当前有效产权的划款银行账号 <br>
	 * @param houseId
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-10-23  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Boolean deleteBankAccount(Long houseId);
}
